/*
 * Map.h
 */
 
#ifndef MAP_H_
#define MAP_H_

#ifndef NULL
#define NULL 0
#endif

#include "Graph.h"
#include "MapObject.h"
#include "MapObjectNode.h"
#include "../domain/Utils.h"


class Map {
private:
	Graph* graph;
	List* mapObjectsList;
public:
	/**
	 * Constructors & destructors
	 */
	Map();
	~Map();
	/**
	* Get graph
	*/
	Graph* getGraph() const;
	/**
	* Set graph
	*/
	void setGraph(Graph* graph);
	/**
	* Get mapObjectsList
	*/
	List* getMapObjectsList() const;
	/**
	* Set mapObjectsList
	*/
	void setMapObjectsList(List* mapObjectsList);
	/**
     * Creates an objectMap form the Map
     */
    int createMapObject(string id, string idEdge, int number, string type);
    /**
     * Gets the objectMap with the specified ID from the mapObjects's List 
	 */
    MapObject* getMapObject(string id);

	List* getMapObjectsByType(string type) const;
};

#endif /* MAP_H_ */
